import java.util.PriorityQueue;

/**
 * Created with IntelliJ IDEA.
 * Description:面试题 17.14. 最小K个数
 * 1、第k个最小的元素
 * 2、第k个最大元素
 * 3、前k个最小\最大元素
 * User: 东莞呵呵
 * Date:2022-07-23
 * Time:16:47
 */
public class TestDemo4 {
    /**
     * 第一种解法：建立小根堆出k个元素
     */
    public int[] smallestK(int[] arr, int k) {
        PriorityQueue<Integer> queue=new PriorityQueue<>();
        for (int i = 0; i < arr.length; i++) {
            queue.offer(arr[i]);
        }
        int[] ret=new int[k];
        for (int i = 0; i < k; i++) {
            ret[i]=queue.poll();
        }
        return ret;
    }
    /**
     * 第二种解法：建立一个大小为K的大根堆，堆顶元素就是最大值，
     * 如果后面元素比堆顶元素小就入堆，最后堆里的元素就是topK
     */
}
